iT邦幫忙

2022 iThome 鐵人賽

0
自我挑戰組

30 天線上自學前端系列 第 70

[Day 70] [React] JavaScript ES6 Spread Operator (展開運算符)

  • 分享至 

  • xImage
  •  

一開頭老師直接帶入例子做說明。

const citrus = ["Lime", "Lemon", "Orange"];
const fruits = ["Apple", "Banana", "Coconut"];

假如我們想要把 citrus array 直接加入 fruits array 的後面,可以怎麼做?

一種做法是用 push,另外一種是用 ES6 Spread Operator。

Spread Operator => ... + array 名稱:

const citrus = ["Lime", "Lemon", "Orange"];
const fruits = ["Apple", "Banana", "Coconut", ...citrus];

/*result:["Apple", "Banana", "Coconut", "Lime", "Lemon", "Orange"]

再來我們可以用在 object,以下 fullName 的內容加入 user 的方式如下:

const fullName = {
  fName: "James",
  lName: "Bond"
};

const user = {
  ...fullName,
  id: 1,
  username: "jamesbond007"
};

/*{fName: "James", lName: "Bond", id: 1, username: "jamesbond007"}

昨天有用到的 useState 內容([Day 69] [React] 改變不同部分組成的狀態 (Complex State) - 練習),也可以藉由 Spread Operator 改寫。

原本的 if else 判斷:

    setContact(prevValue => {
      if (name === "fName") {
        return {
          fName: value,
          lName: prevValue.lName,
          email: prevValue.email
        };
      } else if (name === "lName") {
        return {
          fName: prevValue.fName,
          lName: value,
          email: prevValue.email
        };
      } else if (name === "email") {
        return {
          fName: prevValue.fName,
          lName: prevValue.lName,
          email: value
        };
      }
    });

改寫後:

    setContact(prevValue => {
      return {
        ...prevValue,
        [name]: value
      };
    });

這邊我有很多的問題,不過課程實在講得太淺了。
所以稍微 google 搜尋到了第一篇文章,對我來說解釋得很清楚,也有很多範例,貼在這邊也當作筆記:
Day 09: ES6篇: Spread Operator & Rest Operator(展開與其餘運算符)


上一篇
[Day 69] [React] 改變不同部分組成的狀態 (Complex State) - 練習
下一篇
[Day 71] [React] JavaScript ES6 Spread Operator (展開運算符) 練習
系列文
30 天線上自學前端72
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言